summaryrefslogtreecommitdiff
path: root/app/[lng]/partners/pq/page.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'app/[lng]/partners/pq/page.tsx')
-rw-r--r--app/[lng]/partners/pq/page.tsx62
1 files changed, 54 insertions, 8 deletions
diff --git a/app/[lng]/partners/pq/page.tsx b/app/[lng]/partners/pq/page.tsx
index 8ad23f6e..42c88b21 100644
--- a/app/[lng]/partners/pq/page.tsx
+++ b/app/[lng]/partners/pq/page.tsx
@@ -3,11 +3,16 @@ import { authOptions } from "@/app/api/auth/[...nextauth]/route"
import * as React from "react"
import { Shell } from "@/components/shell"
import { Skeleton } from "@/components/ui/skeleton"
-import { getPQDataByVendorId } from "@/lib/pq/service"
+import { getPQDataByVendorId, getPQProjectsByVendorId } from "@/lib/pq/service"
import { PQInputTabs } from "@/components/pq/pq-input-tabs"
+import { Tabs, TabsList, TabsTrigger } from "@/components/ui/tabs"
-export default async function PQInputPage() {
+export default async function PQInputPage({
+ searchParams
+}: {
+ searchParams: { projectId?: string }
+}) {
// 세션
const session = await getServerSession(authOptions)
// 예: 세션에서 vendorId 가져오기
@@ -15,25 +20,66 @@ export default async function PQInputPage() {
const vendorId = 17 // 임시
const idAsNumber = Number(vendorId)
- // 1) 서버에서 PQ 데이터 조회 (groupName별로 묶인 구조)
- const pqData = await getPQDataByVendorId(idAsNumber)
+ const projectId = searchParams.projectId ? parseInt(searchParams.projectId, 10) : undefined
+
+ // 벤더에게 요청된 프로젝트 PQ 목록 가져오기 (탭 표시용)
+ const projectPQs = await getPQProjectsByVendorId(idAsNumber)
+
+ // PQ 데이터 조회
+ const pqData = await getPQDataByVendorId(idAsNumber, projectId)
+
+ // 현재 프로젝트 정보 (있다면)
+ const currentProject = projectId
+ ? projectPQs.find(p => p.projectId === projectId)
+ : null
return (
<Shell className="gap-2">
+ {/* 헤더 - 프로젝트 정보 포함 */}
<div className="space-y-2">
<h2 className="text-2xl font-bold tracking-tight">
Pre-Qualification Check Sheet
+ {currentProject && (
+ <span className="ml-2 text-muted-foreground">
+ - {currentProject.projectCode}
+ </span>
+ )}
</h2>
<p className="text-muted-foreground">
- PQ에 적절한 응답을 제출하시기 바랍니다. 진행 중 문의가 있으면 담당자에게 연락바랍니다.
+ PQ에 적절한 응답을 제출하시기 바랍니다.
</p>
</div>
- {/* 클라이언트 탭 UI 로드 (Suspense는 여기서는 크게 필요치 않을 수도 있음) */}
+ {/* 일반/프로젝트 PQ 선택 탭 */}
+ {projectPQs.length > 0 && (
+ <div className="border-b">
+ <Tabs defaultValue={projectId ? `project-${projectId}` : "general"}>
+ <TabsList>
+ <TabsTrigger value="general" asChild>
+ <a href="/partners/pq">일반 PQ</a>
+ </TabsTrigger>
+
+ {projectPQs.map(project => (
+ <TabsTrigger key={project.projectId} value={`project-${project.projectId}`} asChild>
+ <a href={`/partners/pq?projectId=${project.projectId}`}>
+ {project.projectCode}
+ </a>
+ </TabsTrigger>
+ ))}
+ </TabsList>
+ </Tabs>
+ </div>
+ )}
+
+ {/* PQ 입력 탭 */}
<React.Suspense fallback={<Skeleton className="h-7 w-52" />}>
- <PQInputTabs data={pqData} vendorId={idAsNumber} />
+ <PQInputTabs
+ data={pqData}
+ vendorId={idAsNumber}
+ projectId={projectId}
+ projectData={currentProject}
+ />
</React.Suspense>
-
</Shell>
)
} \ No newline at end of file